package LeetCode75;

/**
 * 345. 反转字符串中的元音字母
 * 给你一个字符串 s ，仅反转字符串中的所有元音字母，并返回结果字符串。
 *
 * 元音字母包括 'a'、'e'、'i'、'o'、'u'，且可能以大小写两种形式出现不止一次。
 *
 *
 *
 * 示例 1：
 *
 * 输入：s = "hello"
 * 输出："holle"
 * 示例 2：
 *
 * 输入：s = "leetcode"
 * 输出："leotcede"
 *
 *
 * 提示：
 *
 * 1 <= s.length <= 3 * 105
 * s 由 可打印的 ASCII 字符组成
 */
public  class T0345_反转字符串中的元音字母 {

    //使用双指针 左指针从前到后  右指针从后向前
    public static String reverseVowels(String s) {
        int left = 0;
        int right = s.length()-1;
        char[] chars = s.toCharArray();
        while (left<right){

            while (left<s.length()){
                if (checkVowels(chars[left])){
                    break;
                }else{
                    left++;
                }

            }

            while (right>left){
                if (checkVowels(chars[right])){
                    char temp;
                    temp = chars[left];
                    chars[left] = chars[right];
                    chars[right] = temp;
                    left++;
                    right--;
                    break;
                }else{
                    right--;
                }

            }

        }

        return new String(chars);

    }

    public static boolean checkVowels(char c){
        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
    }

    public static void main(String[] args) {
        String race_car = reverseVowels("race car");
    }

}
